var http = require('http');
// console.log(global);

http.createServer(function(request, response) {
  // 出现 n 个 yield，要执行 n+1 次 gen.next(); 才能到得到 done:true;
  function* fn() {
    var a = yield 1;
    console.log('a', a);
    var b = yield 2;
    console.log('b', b);
  }


  if (request.url.indexOf('favicon') > -1) {
    response.writeHead(200, { 'Content-Type': 'text/plain' });
    response.end('Hello World\n');
  } else {

    var go = fn();
    var result = go.next(11);
    // 第一次next() 传参数是没有意义的，没有接收该参数的东西；
    // 执行 yield，停止；
    // 此时 a 没有被赋值；

    console.log(result);
    // { value: 1, done: false }

    result = go.next(22);
    // 执行第二个 yield，停止；
    // 此时 a 有值--next()传递的值视为 yield 的返回值--赋值给 a；
    // b 没有被赋值；
    // a 22

    console.log(result);
    // { value: 2, done: false }

    result = go.next(33);
    // 此时 b 被赋值为 33；生成器函数 fn 执行结束；
    // b 33

    console.log(result);
    // { value: undefined, done: true }

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, { 'Content-Type': 'text/plain' });
    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
  }
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');